package com.java.yz.day09.ketang;

/*
    写案例，并测试
        如何调用方法
        加入方法有多个，如何调用呢?
        方式1：每一种格式调用一个，太麻烦
        方式2：用类或者接口接收该子类对象，多态思想
 */
/*
    我们曾经讲过的方法的形式参数是引用类型的情况，重点是接口的情况，
    我们知道这里需要一个子类对象。而匿名内部类就是一个子类匿名对象，
    所以，可以使用匿名内部类改进以前的做法。
 */

//匿名内部类的返回值类型应用
interface Inter5{
    void fun1();
}
//class NiZi implements Inter5{
//    @Override
//    public void fun1() {
//        System.out.println("啦啦");
//    }
//}
class NiM{
    public Inter5 fun11(){
        //return new NiZi();//之前我们返回就是自己在创建一个子类来接收，现在可以使用匿名内部类来解决
        return new Inter5() {
            @Override
            public void fun1() {
                System.out.println("啦啦");
            }
        };
    }
}


//匿名内部类的参数应用
interface Inter6{
    void fun2();
}
class NiMing22 implements Inter5{

    @Override
    public void fun1() {

    }
}
class NiMing2{
    public void fun22(Inter5 inter5){
        System.out.println("哈哈");
    }

}

public class NiMingClassDemo2 {
    public static void main(String[] args) {
        NiM niM = new NiM();
        Inter5 inter5=niM.fun11();
        inter5.fun1();

        NiMing2 niMing2 = new NiMing2();
        //NiMing22 niMing22 = new NiMing22();
        //niMing2.fun22(niMing22);  //之前传参要重新创建一个类，现在可以使用匿名内部类
        niMing2.fun22(new Inter5() {
            @Override
            public void fun1() {
                System.out.println("哈哈");//这样就比较简便，不用再去创建一个类
            }
        });
    }
}
